const http = require("http");
const fs = require("fs");
const path = require("path");

// 根据文件扩展名设置正确的 Content-Type
function getContentType(filePath) {
    const ext = path.extname(filePath).toLowerCase();
    switch (ext) {
        case '.html':
            return 'text/html';
        case '.js':
            return 'application/javascript';
        case '.css':
            return 'text/css';
        case '.json':
            return 'application/json';
        case '.png':
            return 'image/png';
        case '.jpg':
        case '.jpeg':
            return 'image/jpeg';
        case '.gif':
            return 'image/gif';
        default:
            return 'application/octet-stream';
    }
}

const startNodeService = () => {
  // 定义文件的根目录
  let rootDir = "";
  if (process.env.NODE_ENV !== "development") {
    rootDir = process.resourcesPath;
  } else {
    rootDir = path.resolve(__dirname, "../static");
  }
  // 创建 HTTP 服务器
  const server = http.createServer((req, res) => {
    // 从请求的 URL 中获取文件路径
    const filePath = decodeURIComponent(path.join(rootDir, req.url));
    // 检查文件是否存在并且是一个文件
    fs.stat(filePath, (err, stats) => {
      if (err || !stats.isFile()) {
        res.statusCode = 404;
        res.end("File not found");
        return;
      }

      // 读取并返回文件内容
      fs.readFile(filePath, (err, data) => {
        if (err) {
          res.statusCode = 500;
          res.end("Internal server error");
          return;
        }

        // 设置正确的 Content-Type
        res.setHeader("Content-Type", getContentType(filePath));
        res.statusCode = 200;
        res.end(data);
      });
    });
  });

  // 启动服务器并监听端口
  const port = 8089;
  server.listen(port, () => {
    console.log(`File proxy server is running at http://localhost:${port}/`);
  });
};

export default startNodeService;
